package peace.htmllooker.node.table
{
import flash.text.StyleSheet;

import peace.htmllooker.HtmlUtils;
import peace.htmllooker.VerticalHtmlBox;
import peace.htmllooker.node.Text;
/**
 * Ячейка таблицы 
 */
internal class Cell extends VerticalHtmlBox
{
	// кешируем параметры конструктора
	protected var cellpadding:Number;
	protected var cellspacing:Number;
	
	/**
	 *  
	 * @param xml
	 * @param css
	 * @param cellpadding
	 * @param cellspacing
	 * @param borderThickness
	 * @param borderColor
	 * @param align
	 * 
	 */	
	public function Cell(xml:XML, css:StyleSheet,
						cellpadding:Number = 0, cellspacing:Number = 0, 
						borderThickness:Number = 0, borderColor:Number = 0, align:String=null)
	{
		this.cellpadding = cellpadding;
		this.cellspacing = cellspacing;

		if (borderThickness > 0)
		{
			hasBorder = true;
			this.borderThickness = borderThickness;
			if (borderColor != 0)
			{
				this.borderColor = borderColor;
			}
		}
		if (align) this.align = align;
		
		super(xml, css);
	}
	/**
	 * 
	 * @param xml
	 * @param css
	 * 
	 */
	override protected function init(xml:XML, css:StyleSheet):void
	{
		padding.leftRight = padding.topBottom = cellpadding;
		margin.leftRight = margin.topBottom = cellspacing/2;

		// читаем свойства
		//
		// часть свойств может быть в родительской tr; 
		// другая часть, из таблицы, приходит в конструкторе
		var parentRow:XML = xml.parent();
		
		if (xml.@align != undefined) align = xml.@align;
		else if (parentRow.@align != undefined) align = parentRow.@align;

		if (xml.@valign != undefined) valign = xml.@valign;
		else if (parentRow.@valign != undefined) valign = parentRow.@valign;

		if (parentRow.@bgcolor != undefined) 
		{
			hasBackground = true;
			backgroundColor = HtmlUtils.htmlColor_To_0xcolor(parentRow.@bgcolor);
		}
		
		var styles:Object;
		var s:String;
		if (xml.@style != undefined)
		{
			styles = parseStyleAttribute(xml.@style);
		}
		if (xml.@width != undefined || (styles && styles.width))
		{
			s = styles ? styles.width : xml.@width;
			if (s.indexOf("%") > -1) percentWidth = parseFloat(s)
			else explicitWidth = parseFloat(s) + margin.left + margin.right;
		}
		if (xml.@height != undefined || (styles && styles.height))
		{
			s = styles ? styles.height : xml.@height;
			if (s.indexOf("%") > -1) percentHeight = parseFloat(s)
			else explicitHeight = parseFloat(s) + margin.top + margin.bottom;
		}

		super.init(xml, css);
	}
	/**
	 * Не допускаем пустых ячеек таблицы - вставляем пустой текст туда
	 *  
	 * @param xml
	 * @param css
	 * 
	 */	
//	override protected function createChildren(xml:XML, css:StyleSheet):void
//	{
//		super.createChildren(xml, css);
//		
//		// вставляем пустой текст
//		if (container.length == 0)
//		{
//			container.add (new Text(new XML(), css));
//		}
//	}
	
	
}
}